The present invention xe2x80x98relatesxe2x80x99 generally to music synthesizers, and more particularly, to a customizable, software-based digital wavetable synthesizer.
Typical digital audio synthesizers are a combination of hardware, firmware and software (see, e.g., U.S. Pat. No. 5,668,338), which store sample data for various types of sounds, such as those produced by instruments, voices etc., in a variety of manners (typically chips, programmable read-only memories or PROMs, or firmware). They process the sample data to produce the desired sounds, and xe2x80x9cplayxe2x80x9d the sounds primarily in Musical Instrument Digital Interface (MIDI) and the Audio Wave File formats.
Specifically, the sample data is used to create waveforms, which are then stored as wavetables in hardware or firmware. A sample for a given note is obtained and then digitally manipulated or modified to obtain adjacent notes. Accordingly, it is not standard practice to sample all notes and tones, but rather only some notes or tones are sampled and the adjacent notes or semi-tones are electronically generated. Further, conventional synthesizers are not very portable (e.g., they are difficult to easily transport due to their size). Conventional synthesizers can also be cumbersome or difficult to interface with devices such as personal computers. Consequently, there is a need for a synthesizer that can capture an extensive collection of notes and tones, is portable, and is accessible or easy to interface with many types of devices.
The present invention is directed to a software implementation of a music synthesizer that may be readily installed and operated on a conventional computer without the need for a music synthesizer soundboard. A conventional soundboard provides the necessary input and output access required by the software system. This advantageously allows portability from one computer to another. In one embodiment, the music synthesizer comprises an input device to sequentially accept musical sounds corresponding to a plurality of single musical notes at semi-tone intervals from a selected musical instrument and to generate measured digital samples thereof. The measured samples contain at least one complete cycle of each of the plurality of single musical notes at the semi-tone intervals. A processor software module analyzes the measured sample data points for each of the plurality of single musical notes at the semi-tone intervals and extracts therefrom one complete cycle of each of the plurality of single musical notes at semi-tone intervals. The processor software module further processes the extracted data to determine the frequency of one complete cycle of each of the plurality of single musical notes at semi-tone intervals and to normalize the extracted data such that a first data sample in the extracted data for the one complete cycle of each of the plurality of single musical notes at semi-tone intervals has an amplitude of zero. A data structure stores the normalized data for the one complete cycle of each of the plurality of single musical notes at semi-tone intervals in association with a data identifier wherein the data structure contains at least one complete cycle of each of the plurality of single musical notes at semi-tone intervals for the selected musical instrument.
In one embodiment, the complete cycle of each of the plurality of single musical notes at semi-tone intervals is characterized by a plurality of measured sample data points. The processor software module determines a starting point of the one complete cycle of each of the plurality of single musical notes at semi-tone intervals by calculating a time shift between first and second measured sample data points of the plurality of measured sample data points where the one complete cycle of each of the plurality of single musical notes at semi-tone intervals begins.
In addition, the software processor can process successive ones of the plurality of measured data sample points of the one complete cycle of each of the plurality of single musical notes at semi-tone intervals to generate values that are calculated by interpolating between measured sample data points to determine a data value at the time shift between the successive measured sample data points. The processor software module further determines a normalized amplitude for each of the determined data points at the time shift between successive measured sample data points by determining the actual range between the greatest positive data value and the greatest negative data value for the measured sample data points and calculating a ratio of a desired range to the actual range. The processor software module adjusts the determined data values at the time shift between the successive measured sample data points by applying the calculator ratio thereto.
In one implementation, the data structure may be implemented with a database software program. In an exemplary embodiment, the database software program may be a conventional software program to allow easy portability between computing platforms.
The data structure may comprise a note specification data structure and a sample value data structure. The note specification data structure may contain a number of data fields to identify the selected instrument, to identify a particular one of the plurality of single musical notes at semi-tone intervals, and to identify the number of sample data values for the one complete cycle of the particular one of the plurality of single musical notes at semi-tone intervals. The sample values data structure contains data fields to identify the selected musical instrument, to identify a particular one of the plurality of single musical notes at semi-tone intervals, and also includes a sample data field containing data values for the one complete cycle of the particular one of the plurality of single musical notes at semi-tone intervals.
In addition to the data processing and storage system to store data samples, the synthesizer may further comprise a rules data structure to store a set of rules associated with the generation of musical notes and a user interface operable by a user to select a sequence of musical notes. A music file generation processor is coupled to the user interface and receives data indicative of the user-selected sequence of musical notes. The generation processor accesses the rules data structure and applies the set of rules to the user-selected sequence of musical notes to thereby generate a musical output file. A soundboard coupled to the synthesizer can play the musical output file.